home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat24 / zoom / zoom1.0.doc < prev   
Encoding:
Text File  |  1993-01-17  |  13.5 KB  |  316 lines

  1. *******************************************************************************
  2. *                   Zoom version 1.0                   *
  3. *******************************************************************************
  4. *                Documentation                      *
  5. *******************************************************************************
  6. *              © François PAULHIAC, 1993                  *
  7. *******************************************************************************
  8.  
  9.  
  10.     Préliminaires
  11.     -------------
  12.  
  13.    Zoom est FREEWARE, c'est-à dire qu'il est totalement gratuit, mais que  vous
  14. ne pouvez pas vous en servir pour gagner de l'argent  en  le   revendant.    Si
  15. vous voulez redistribuer Zoom, vous ne pouvez pas le faire payer plus  de  10FF
  16. +  les frais liés au support sur lequel  vous    le   distribuez   (prix   d'une
  17. disquette vierge par exemple, ou prix d'une disquette vierge +  frais   d'envoi
  18. s'il  est vendu par correspondance).
  19.  
  20.    D'autre part, vous devez redistribuer Zoom toujours avec son fichier source
  21. et sa documentation (ce fichier, ou une traduction).
  22.  
  23.    Enfin,  vous  pouvez  modifier  Zoom   et    redistribuer    des    versions
  24. modifiées,   à    condition  que    l'original  (programme   +   documentation    +
  25. source)  non   altéré soit toujours fourni sur    le  même  support   que   votre
  26. version   modifiée   (si vous   le  distribuez  par   disquette,   la   version
  27. originale  et  la  version modifiée  doivent être sur  la  même  disquette   ou
  28. sur  le  même    groupe      de  disquettes.   Si     vous    le  distribuez    via  un
  29. serveur, la  version  originale  et la version modifiée   doivent  être  toutes
  30. deux disponibles).
  31.  
  32.    Le source est écrit    uniquement  en    Hisoft     Basic.   Il   pourra    sembler
  33. assez hétéroclite, puisque j'ai  espacé  son  écriture  sur   plusieurs   mois.
  34. Enfin,    le nom "Zoom" n'a rien à voir avec le programme!
  35.  
  36.  
  37.  
  38.     Généralités
  39.     -----------
  40.  
  41.     Il     s'agit    d'un    traceur    de     courbes     et     de     surfaces
  42. relativement  rudimentaire,  mais   néammoins    capable   de    dessiner    des
  43. courbes  du  type  y fonction de x, des courbes paramétrées, polaires  et   des
  44. surfaces du type z fonction de x et y.
  45.  
  46.     Le programme est loin d'être parfait, c'est pourquoi il vaut  mieux  éviter
  47. de lui faire tracer des fonctions comportant trop de  branches    infinies,  sous
  48. peine de "planter" le système.
  49.  
  50.  
  51.  
  52.     Le démarrage
  53.     ------------
  54.  
  55.     Lancez le programme en double-cliquant sur son icône ou en    l'appelant  par
  56. son nom depuis le Shell. Vous devriez vous retrouver avec un  écran  divisé  en
  57. deux parties: en haut, l'espace dans lequel va être tracé la courbe, et en  bas
  58. un rectangle orange  contenant    différentes  zones  destinées  à  recevoir  des
  59. paramêtres que vous allez entrer au clavier.
  60.  
  61.     Le curseur doît se trouver dans le champ intitulé "y=". Frappez  alors  une
  62. fonction de x (par  exemple  "sin  x/x").  Vous  pouvez  utiliser  les  touches
  63. curseurs gauche et  droite,  ainsi  que  les  touches  DEL  et    Backspace  pour
  64. corriger les erreurs eventuelles. Pour effacer complêtement ce que  vous  venez
  65. d'entrer, appuyez simultanément sur Alt  et  X.  Pour  annuler  cette  dernière
  66. maneuvre, appuyez simultanément sur Alt et A.
  67.  
  68.     Lorsque vous avez terminé d'entrer une  valeur  dans  une  zone  de  saisie
  69. particulière, vous pouvez passer à la suivante en utilisant  la  touche  Return
  70. ou la touche curseur vers  le  bas,  ou  encore  revenir  à  la  précedente  en
  71. utilisant la touche curseur vers le haut, ou aller entrer une valeur  dans  une
  72. zone quelconque en cliquant à l'intérieur avec la souris.
  73.  
  74.     Par exemple, entrez les valeurs suivantes dans les différents champs:
  75.  
  76.     y="sin(x)/x"
  77.     xmin="-10*pi"   xmax="10*pi"
  78.     ymin="-1"       ymax="1"
  79.     Axe X="pi"       Axe Y="1"
  80.  
  81.     La dernière valeur doît déjà être initialisée, donc vous n'avez  pas  à  la
  82. modifier.
  83.  
  84.     Appuyez sur F10 pour tracer  la  courbe,  ou  encore  cliquez  sur    "Tracer
  85. (F10)"La courbe devraît apparaître.
  86.  
  87.     La partie du plan dans laquelle vous allez    visualiser  la    courbe    est  un
  88. rectangle délimité par quatre points de coordonnées  (xmin,ymin),  (xmax,ymin),
  89. (xmax,ymax), (xmin,ymax). Entrez ici ces quatre valeurs.
  90.  
  91.     Enfin, Axe X et Axe Y représentent    les  pas  des  graduations  qui  seront
  92. dessinées sur les axes des coordonnées.
  93.  
  94.     Le champ "Superposer (F9)" ou la touche F9 servent à représenter  plusieurs
  95. courbes les unes sur les autres. Lorsque vous  utiliserez  cette  option  à  la
  96. place de "Tracer", la ou les  courbes  affichées  précedemment  ne  seront  pas
  97. effacées de l'écran.
  98.  
  99.  
  100.  
  101.     Courbes paramêtrées
  102.     -------------------
  103.  
  104.     Ici, x et y sont tous deux fonctions d'un paramêtre t. Pour passer en  mode
  105. courbes  paramêtrées,  appuyer    sur  la  touche  F2  ou   choisissez   l'option
  106. correspondante dans le menu déroulant "Mode".
  107.  
  108.     Voici la signification des différents champs:
  109.  
  110.     * "x=" et "y=" : ce sont deux  fonctions  de  t.  Par  exemple,  entrez
  111. x="sin(2*t)" et y="sin(3*t)".
  112.  
  113.     * "<=t<=": ici, vous trouverez deux champs dans lesquels vous  entrerez
  114. les valeurs minimales et maximales entre lesquelles va évoluer le paramêtre  t.
  115. Pour l'exemple précédent, entrez "-pi"<=t<="pi".
  116.  
  117.     * "xmin","xmax","ymin","ymax": même signification que pour les  courbes
  118. simples. Entrez ici respectivement "-1","1","-1","1".
  119.  
  120.     *  "Axe  X","Axe  Y":  Idem.  Laissez  les  valeurs  par  défaut   pour
  121. l'exemple.
  122.  
  123.     Appuyez sur F10 pour tracer la courbe de Lissajous...
  124.  
  125.  
  126.  
  127.     Courbes polaires
  128.     ----------------
  129.  
  130.     Ici, on fait toujours varier un paramêtre t pour dessiner la  courbe,  mais
  131. il représente maintenant un angle. A  partir  de  cet  angle,  on  calcule  une
  132. distance r fonction de t, puis on affiche sur  l'écran  un  point  situé  à  la
  133. distance r de l'origine, sur la droite faisant un angle t  avec  l'horizontale.
  134. Noter que t et r peuvent être positifs ou négatifs.
  135.  
  136.     La signification des différents champs est la suivante:
  137.  
  138.     * "r=": entrez ici une fonction de l'angle t. Par exemple:
  139. r=exp(t/10).
  140.  
  141.     * "<=t<=": même signification que pour les courbes  paramêtrées.  Comme
  142. il s'agit d'un angle, les  valeurs  minimales  et  maximales  de  t  seront  en
  143. général  des  multiples  de  pi  (tous  les  angles  sont  en  radian).  Entrez
  144. "-10*pi"<=t<="10*pi".
  145.  
  146.     * "xmax","ymax": ce sont, en valeur absolue, les valeurs maximales  que
  147. pourront prendre les coordonnées x et y des points de la courbe  affichée.  Ces
  148. valeurs n'ont nullement besoin d'être exactes, mais cela permet à  la  courbede
  149. remplir le plus  de  place  possible  sur  l'écran.  Entrez  xmax="exp(pi)"  et
  150. ymax="exp(pi)".
  151.  
  152.     * "Axe X","Axe Y": toujours la même signification. Laissez  encore  les
  153. valeurs par défauts.
  154.  
  155. Appuyez sur F10 pour afficher la spirale...
  156.  
  157.     Un autre exemple (cardioïde):
  158.  
  159.     r="t*t"
  160.     "-pi" <=t<= "pi"
  161.     xmax="pi*pi", ymax="pi*pi"
  162.     Axe X="1", Axe Y="1"
  163.  
  164.  
  165.  
  166.     Surfaces
  167.     --------
  168.  
  169.     Cette fois, il s'agit de l'équivalent en trois dimensions  des  courbes  du
  170. type y=f(x). On prend une partie rectangulaire du  plan,  et  pour  chacun  des
  171. points de ce rectangle, on calcule une côte z. On a donc z fonction de x et  de
  172. y. On représente ensuite les points de    coordonnées  (x,y,z)  obtenus,  en  les
  173. visualisant sous un certain angle.
  174.  
  175.     Le champ "z=" contient donc une fonction de x et de y. Par exemple,  entrez
  176. z="x*x-y*y".
  177.  
  178.     Le champ "Correction Z" contient un nombre par lequel toutes  les  côtes  Z
  179. des points calculés seront  multipliées.  Ceci    sert  à  mettre  en  valeur  le
  180. "relief" de la surface. Pour le moment, laissez Correction Z à 1.
  181.  
  182.     Les nombres "xmin","xmax","ymin","ymax" permettent  de  définir  la  partie
  183. rectangulaire du plan pour les points de laquelle on calculera une côte z.  Ces
  184. quatre    champs    ont  donc  toujours   la   même   signification.   Entrez   ici
  185. respectivement: "-1","1","-1","1".
  186.  
  187.     "zmin" et "zmax" définissent les valeurs  minimales  et  maximales  que  la
  188. fonction z définie plus haut  pourra  prendre  sur  ce    rectangle.  Entrez  ici
  189. "-2/10" et "2/10". (Remarque: ne tenez pas compte ici de la valeur entrée  dans
  190. "Correction Z", mais seulement de la fonction écrite plus haut et du  rectangle
  191. dans laquelle on veut  la  calculer).  Ces  valeurs  n'ont  pas  besoin  d'être
  192. exacte, elles servent seulement pour l'affichage.
  193.  
  194.     Il n'est pas possible au programme  de  calculer  les  côtes  de  tous  les
  195. points situés dans le rectangle (vu qu'il y en a une infinité...). Donc, il  va
  196. seulement prendre un "échantillon" de  points  et  calculer  leurs  côtes  pour
  197. représenter la surface. Le grand rectangle défini plus haut  sera  découpés  en
  198. un certain nombre de mailles, elles-mêmes rectangulaires. "divx" représente  le
  199. nombre de mailles le long du coté du rectangle parallèle  à  l'axe  des  X,  et
  200. "divy" le nombre de lailles le long du coté parallèle à  l'axe  des  Y.  Entrez
  201. par exemple divx="40" et divy="40". De manière générale, plus  les  valeurs  de
  202. "divx" et "divy" seront élevées,  plus  le  tracé  sera  long  mais  le  dessin
  203. précis.
  204.  
  205.     "RZ" et "RX" permettent de définir l'angle sous lequel on  veut  visualiser
  206. la surface. Comme il s'agit d'une courbe en  trois  dimensions,  il  n'est  pas
  207. possible de la représenter intégralement sur le moniteur, mais seulement de  la
  208. projeter.
  209.  
  210.     Considerons deux repères. D'une part celui de  l'écran:  l'axe  des  X  est
  211. horizontal de la gauche vers la droite, celui des Y est vertical  du  bas  vers
  212. le haut; d'autre part celui dans lequel on  définit  la  surface.  Nous  allons
  213. faire "tourner" le second repère autour du premier.
  214.  
  215.     Au départ, les deux coïncident: si vous essayez de représenter une    surface
  216. en laissant RZ et RX à zéro,  vous  ne    verrez    qu'un  quadrillage.  En  effet,
  217. puisque l'axe des X du  repère  de  la  surface  est  confondu  avec  celui  de
  218. l'écran, et que l'axe des Y de la surface est  aussi  confondu  avec  celui  de
  219. l'écran, on se retrouve forcément avec l'axe des Z du  repère  dans  lequel  on
  220. trace la surface perpendiculaire à l'écran:  du  coup,  il  est  impossible  de
  221. distinguer les hauteurs des différents points tracés. Il  est  donc  nécessaire
  222. de faire tourner le second repère par rapport au premier.
  223.  
  224.     Pour cela le programme procède comme suit:
  225.  
  226.     * A partir de la position initiale, il fait  tourner  la  surface  d'un
  227. angle RZ autour d'un axe perpendiculaire à l'écran;
  228.  
  229.     * Puis, il la faît tourner d'un angle RX  autour  de  l'axe  des  X  de
  230. l'écran.
  231.  
  232.     Noter que RZ et RX sont tous deux algébriques.
  233.     Pour l'exemple, fixez RZ="pi/3" et RX="pi/3".
  234.  
  235. Appuyez sur F10 pour afficher le paraboloïde hyperbolique.
  236.  
  237.     * Lors de la définition de la fonction z, vous pouvez  utiliser  une  autre
  238. variable: r. Elle est égale à la racine  carrée  de  x*x+y*y  (r=sqr(x*x+y*y)).
  239. Elle bien sûr la distance du point de coordonnée(x,y) dont on veut calculer  la
  240. côte à l'origine.
  241.  
  242.     Autre exemple:
  243.  
  244.     z="sin(r)/r", Correction Z="10"
  245.     xmin="-10", xmax="10"
  246.     ymin="-10", ymax="10"
  247.     zmin="-1", zmax="1"
  248.     divx="50", divy="50"
  249.     RZ="pi/6", RX="pi/3"
  250.  
  251.  
  252.  
  253.     Autres fonctionnalités
  254.     ----------------------
  255.  
  256.  
  257.     * Le menu "Mode" permet de choisir entre les différents  types  de  courbes
  258. proposés et de quitter le programme. Pour  chaque  option  (sauf  quitter),  un
  259. raccourci clavier est prévu.
  260.  
  261.  
  262.     * Le menu "option" contient trois rubriques:
  263.  
  264.     - "Tracer Lignes": lors du tracé des courbes (pas des surfaces),  cette
  265. option permet de chosir entre relier ou ne pas relier les points  affichés  par
  266. des lignes.
  267.  
  268.     - "Paramêtres": chosir cette option entraîne l'affichage  d'un  tableau
  269. permettant le changer la valeur de variables utilisées par  le    programme  pour
  270. le calcul et l'affichage des courbes.
  271.  
  272.         * "epsilon": lors du tracé des courbes paramétrées ou polaires,  le
  273. programme essaie de rendre les points affichés aussi proche les uns des  autres
  274. que possible, en jouant sur les valeurs du paramêtre t. Il procède comme  suit:
  275.  
  276.         - Il calcule les coordonnées des points M1 et M2  correspondant
  277. à deux valeurs différentes du paramêtre t: t1 et t2=t1+dt.
  278.  
  279.         - Si  les  deux  points  sont  trop  éloignés  et  que    dt  est
  280. supérieur à epsilon, alors il diminue la valeur de dt et recommence.
  281.  
  282.         - Si les deux  points  sont  trop  éloignés  mais  que    dt  est
  283. inférieur à epsilon, alors il en conclue que  la  ou  les  fonctions  utilisées
  284. pour génerer la courbe ne sont probablement pas continues à cet endroit, et  ne
  285. change pas la valeur de dt.
  286.  
  287.         - Si les deux points à l'écran sont trop proches,  il  augmente
  288. la valeur de dt.
  289.  
  290.         * "distance": toujours dans  le  cas  des  courbes  paramêtrées  ou
  291. polaires, ce nombre permet de fixer la    distance  optimale  entre  deux  points
  292. affichés sur l'écran (en pixels). Le programme essayera ensuite de  s'y  tenir,
  293. moyennant la procédure expliquée ci-dessus. Plus la valeur  de    "distance"  est
  294. grand, moins le programme calculera de points, et plus le  tracé  sera    rapide.
  295. Par contre, les courbes seront moins "lisses".
  296.  
  297.         * "aspect": il s'agit du rapport entre la hauteur et la largeur  de
  298. la zone d'affichage des courbes, exprimées  en  pixels.  Ce  nombre  permet  de
  299. corriger les déformations dues au fait que cette zone  soit  rectangulaire,  et
  300. non carrée.
  301.  
  302.         * "Ok" et "Annuler" permettent respectivement de prendre ou  de  ne
  303. pas prendre en compte les  modifications  que  vous  avez  effectuées  dans  le
  304. tableau de paramêtres. Vous pouvez aussi appuyer sur ESC  au  lieu  de    cliquer
  305. sur "Annuler"
  306.  
  307.     - "Aide": accessible également par appui sur la  touche  "Help",  cette
  308. option affiche les  fonctions  et  les    opérateurs  qui  sont  compris    par  le
  309. programme.
  310.  
  311.  
  312.     * Enfin, si le tracé d'une  courbe  vous  semble  trop  long,  vous  pouvez
  313. appuyer sur "ESC" pour l'interrompre.
  314.  
  315. =============================================================================
  316.